home *** CD-ROM | disk | FTP | other *** search
/ IRIX 6.2 Development Libraries / SGI IRIX 6.2 Development Libraries.iso / dist / complib.idb / usr / share / src / Complib / examples / SCFFTM1D_ex.f.z / SCFFTM1D_ex.f
Text File  |  1996-03-14  |  3KB  |  103 lines

  1. c
  2. c SCFFTM1D_ex.f
  3. c
  4. c       This simple example illustrates the use of the FORTRAN
  5. c       interface to a real-to-complex multiple FFT routines by
  6. c       calculating a circular shift.
  7. c
  8. c
  9. c Copyright 1995, Silicon Graphics, Inc.
  10. c ALL RIGHTS RESERVED
  11. c
  12. c UNPUBLISHED -- Rights reserved under the copyright laws of the United
  13. c States.   Use of a copyright notice is precautionary only and does not
  14. c imply publication or disclosure.
  15. c
  16. c U.S. GOVERNMENT RESTRICTED RIGHTS LEGEND:
  17. c Use, duplication or disclosure by the Government is subject to restrictions
  18. c as set forth in FAR 52.227.19(c)(2) or subparagraph (c)(1)(ii) of the Rights
  19. c in Technical Data and Computer Software clause at DFARS 252.227-7013 and/or
  20. c in similar or successor clauses in the FAR, or the DOD or NASA FAR
  21. c Supplement.  Contractor/manufacturer is Silicon Graphics, Inc.,
  22. c 2011 N. Shoreline Blvd. Mountain View, CA 94039-7311.
  23. c
  24. c THE CONTENT OF THIS WORK CONTAINS CONFIDENTIAL AND PROPRIETARY
  25. c INFORMATION OF SILICON GRAPHICS, INC. ANY DUPLICATION, MODIFICATION,
  26. c DISTRIBUTION, OR DISCLOSURE IN ANY FORM, IN WHOLE, OR IN PART, IS STRICTLY
  27. c PROHIBITED WITHOUT THE PRIOR EXPRESS WRITTEN PERMISSION OF SILICON
  28. c GRAPHICS, INC.
  29. c
  30. c
  31. c       To build executable:
  32. c       % f77 -o SCFFTM1D_ex SCFFTM1D_ex.f -lcomplib.sgimath
  33. c
  34. c       To run:
  35. c       % SCFFTM1D_ex
  36. c
  37. c       Input:
  38. c       3
  39. c       4
  40. c
  41. c       Output:
  42. c       Input Array of size 3x 4 :
  43. c         0.00  0.01  0.02  0.03
  44. c         1.00  1.01  1.02  1.03
  45. c         2.00  2.01  2.02  2.03
  46. c       Loop on 1D FFTs - stride 1 of size 4x 4 :
  47. c         3.00  3.03  3.06  3.09
  48. c         0.00  0.00  0.00  0.00
  49. c        -1.50 -1.50 -1.50 -1.50
  50. c         0.87  0.87  0.87  0.87
  51. c       Multiple 1D FFTs - stride 1 of size 4x 4 :
  52. c         3.00  3.03  3.06  3.09
  53. c         0.00  0.00  0.00  0.00
  54. c        -1.50 -1.50 -1.50 -1.50
  55. c         0.87  0.87  0.87  0.87
  56. c
  57.  
  58.       PROGRAM SCFFTM1D_ex
  59.       IMPLICIT NONE
  60.       INTEGER      I, J, M, N, OFFSET, SIZE
  61.       PARAMETER  ( SIZE = 8 )
  62.       REAL         ARRAY1( 2*( (SIZE+2)/2 )*SIZE ),
  63.      1             ARRAY2( 2*( (SIZE+2)/2 )*SIZE ),
  64.      2             COEF  ( SIZE+15 )
  65.  
  66.       READ ( 5,* ) M, N
  67.  
  68.       DO J = 1, N
  69.          DO I = 1, M+2
  70.             ARRAY1( i+( M+2 )*( j-1 ) ) = REAL( I-1 ) + 0.01*REAL( J-1 )
  71.             ARRAY2( i+( M+2 )*( j-1 ) ) = REAL( I-1 ) + 0.01*REAL( J-1 )
  72.          END DO
  73.       END DO 
  74.  
  75.       WRITE( 6,'( A, I2, A, I2, A )' ) 
  76.      &       "Input Array of size", M, "x", N, " :"
  77.       DO I = 1, M
  78.          WRITE( 6,'( 10F6.2 )' ) ( ARRAY1( i+(M+2)*(J-1) ), J = 1, N )
  79.       END DO
  80.    
  81.       CALL SFFT1DUI( M, COEF )
  82.       DO J = 1, N
  83.          CALL SCFFT1DU ( -1, M, ARRAY1( (J-1)*(M+2)+1 ), 1, COEF )
  84.       END DO
  85.       CALL SCFFTM1DU( -1, M, N, ARRAY2, 1, M+2, COEF )         
  86.  
  87.       WRITE( 6,'( A, I2, A, I2, A)' ) 
  88.      1      "Loop on 1D FFTs - stride 1 of size", 2*((M+2)/2), "x", N, 
  89.      2      " :"
  90.       DO I = 1, 2*( (M+2)/2 )
  91.          WRITE( 6,'(10F6.2)') ( ARRAY1( I+(M+2)*(J-1) ),J = 1, N )
  92.       END DO
  93.       WRITE( 6,'( A, I2, A, I2, A)' ) 
  94.      1      "Multiple 1D FFTs - stride 1 of size", 2*((M+2)/2), "x", N, 
  95.      2      " :"
  96.       DO I = 1, 2*( (M+2)/2 )
  97.          WRITE( 6,'( 10F6.2 )' ) ( ARRAY2( I+(M+2)*(J-1) ), J = 1, N )
  98.       END DO
  99.  
  100.       STOP
  101.       END
  102.  
  103.